home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / RepaintManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  7.2 KB  |  404 lines

  1. package javax.swing;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Dimension;
  7. import java.awt.Image;
  8. import java.awt.Rectangle;
  9. import java.awt.Toolkit;
  10. import java.awt.Window;
  11. import java.awt.image.ImageObserver;
  12. import java.util.Enumeration;
  13. import java.util.Hashtable;
  14. import java.util.Vector;
  15.  
  16. public class RepaintManager {
  17.    Hashtable dirtyComponents = new Hashtable();
  18.    Hashtable tmpDirtyComponents = new Hashtable();
  19.    Vector invalidComponents;
  20.    boolean doubleBufferingEnabled = true;
  21.    Image doubleBuffer;
  22.    Dimension doubleBufferSize;
  23.    private Dimension doubleBufferMaxSize;
  24.    private static final Object repaintManagerKey;
  25.    Rectangle tmp = new Rectangle();
  26.    // $FF: synthetic field
  27.    static Class class$javax$swing$RepaintManager;
  28.  
  29.    static {
  30.       repaintManagerKey = class$javax$swing$RepaintManager != null ? class$javax$swing$RepaintManager : (class$javax$swing$RepaintManager = class$("javax.swing.RepaintManager"));
  31.    }
  32.  
  33.    public synchronized void addDirtyRegion(JComponent var1, int var2, int var3, int var4, int var5) {
  34.       if (var4 > 0 && var5 > 0 && var1 != null) {
  35.          if (var1.getWidth() > 0 && var1.getHeight() > 0) {
  36.             Object var6 = null;
  37.             Object var7 = var1;
  38.  
  39.             while(true) {
  40.                if (var7 != null) {
  41.                   if (!((Component)var7).isVisible() || ((Component)var7).getPeer() == null) {
  42.                      return;
  43.                   }
  44.  
  45.                   if (!(var7 instanceof Window) && !(var7 instanceof Applet)) {
  46.                      var7 = ((Component)var7).getParent();
  47.                      continue;
  48.                   }
  49.  
  50.                   var6 = var7;
  51.                }
  52.  
  53.                Rectangle var8 = (Rectangle)this.dirtyComponents.get(var1);
  54.                if (var8 == null) {
  55.                   this.dirtyComponents.put(var1, new Rectangle(var2, var3, var4, var5));
  56.                } else {
  57.                   SwingUtilities.computeUnion(var2, var3, var4, var5, var8);
  58.                }
  59.  
  60.                SystemEventQueueUtilities.queueComponentWorkRequest((Component)var6);
  61.                return;
  62.             }
  63.          }
  64.       }
  65.    }
  66.  
  67.    public synchronized void addInvalidComponent(JComponent var1) {
  68.       Object var2 = null;
  69.       Object var3 = var1;
  70.  
  71.       while(true) {
  72.          if (var3 != null) {
  73.             if (var3 instanceof CellRendererPane || ((Component)var3).getPeer() == null) {
  74.                return;
  75.             }
  76.  
  77.             if (!(var3 instanceof JComponent) || !((JComponent)var3).isValidateRoot()) {
  78.                var3 = ((Component)var3).getParent();
  79.                continue;
  80.             }
  81.  
  82.             var2 = var3;
  83.          }
  84.  
  85.          if (var2 == null) {
  86.             return;
  87.          }
  88.  
  89.          Object var4 = null;
  90.          Object var5 = var2;
  91.  
  92.          while(true) {
  93.             if (var5 != null) {
  94.                if (!((Component)var5).isVisible() || ((Component)var5).getPeer() == null) {
  95.                   return;
  96.                }
  97.  
  98.                if (!(var5 instanceof Window) && !(var5 instanceof Applet)) {
  99.                   var5 = ((Component)var5).getParent();
  100.                   continue;
  101.                }
  102.  
  103.                var4 = var5;
  104.             }
  105.  
  106.             if (var4 == null) {
  107.                return;
  108.             }
  109.  
  110.             if (this.invalidComponents == null) {
  111.                this.invalidComponents = new Vector();
  112.             } else {
  113.                int var6 = this.invalidComponents.size();
  114.  
  115.                for(int var7 = 0; var7 < var6; ++var7) {
  116.                   if (var2 == (Component)this.invalidComponents.elementAt(var7)) {
  117.                      return;
  118.                   }
  119.                }
  120.             }
  121.  
  122.             this.invalidComponents.addElement(var2);
  123.             SystemEventQueueUtilities.queueComponentWorkRequest((Component)var4);
  124.             return;
  125.          }
  126.       }
  127.    }
  128.  
  129.    // $FF: synthetic method
  130.    static Class class$(String var0) {
  131.       try {
  132.          return Class.forName(var0);
  133.       } catch (ClassNotFoundException var2) {
  134.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  135.       }
  136.    }
  137.  
  138.    void collectDirtyComponents(Hashtable var1, JComponent var2, Vector var3) {
  139.       boolean var12 = false;
  140.       Object var9 = var2;
  141.       Object var8 = var2;
  142.       Rectangle var11 = var2._bounds;
  143.       int var6 = 0;
  144.       int var4 = 0;
  145.       int var7 = 0;
  146.       int var5 = 0;
  147.       this.tmp = new Rectangle((Rectangle)var1.get(var2));
  148.       SwingUtilities.computeIntersection(0, 0, var11.width, var11.height, this.tmp);
  149.       if (!this.tmp.isEmpty()) {
  150.          if (var2.isOpaque()) {
  151.             var12 = true;
  152.          }
  153.  
  154.          while(true) {
  155.             Container var10 = ((Component)var8).getParent();
  156.             if (var10 == null || !(var10 instanceof JComponent)) {
  157.                if (var2 != var9) {
  158.                   this.tmp.setLocation(this.tmp.x + var6 - var4, this.tmp.y + var7 - var5);
  159.                   Rectangle var13 = (Rectangle)var1.get(var9);
  160.                   SwingUtilities.computeUnion(this.tmp.x, this.tmp.y, this.tmp.width, this.tmp.height, var13);
  161.                }
  162.  
  163.                if (!var3.contains(var9)) {
  164.                   var3.addElement(var9);
  165.                }
  166.  
  167.                return;
  168.             }
  169.  
  170.             var8 = var10;
  171.             if (((JComponent)var10).isOpaque()) {
  172.                var12 = true;
  173.             }
  174.  
  175.             var4 += var11.x;
  176.             var5 += var11.y;
  177.             this.tmp.setLocation(this.tmp.x + var11.x, this.tmp.y + var11.y);
  178.             var11 = ((JComponent)var10)._bounds;
  179.             this.tmp = SwingUtilities.computeIntersection(0, 0, var11.width, var11.height, this.tmp);
  180.             if (this.tmp.isEmpty()) {
  181.                return;
  182.             }
  183.  
  184.             if (var1.get(var10) != null) {
  185.                var9 = var10;
  186.                var6 = var4;
  187.                var7 = var5;
  188.             }
  189.          }
  190.       }
  191.    }
  192.  
  193.    public static RepaintManager currentManager(Component var0) {
  194.       RepaintManager var1 = (RepaintManager)SwingUtilities.appContextGet(repaintManagerKey);
  195.       if (var1 == null) {
  196.          var1 = new RepaintManager();
  197.          SwingUtilities.appContextPut(repaintManagerKey, var1);
  198.       }
  199.  
  200.       return var1;
  201.    }
  202.  
  203.    public static RepaintManager currentManager(JComponent var0) {
  204.       return currentManager((Component)var0);
  205.    }
  206.  
  207.    public Rectangle getDirtyRegion(JComponent var1) {
  208.       Object var2 = null;
  209.       synchronized(this){}
  210.  
  211.       try {
  212.          var6 = (Rectangle)this.dirtyComponents.get(var1);
  213.       } catch (Throwable var5) {
  214.          throw var5;
  215.       }
  216.  
  217.       return var6 == null ? new Rectangle(0, 0, 0, 0) : new Rectangle(var6);
  218.    }
  219.  
  220.    public Dimension getDoubleBufferMaximumSize() {
  221.       if (this.doubleBufferMaxSize == null) {
  222.          this.doubleBufferMaxSize = Toolkit.getDefaultToolkit().getScreenSize();
  223.       }
  224.  
  225.       return this.doubleBufferMaxSize;
  226.    }
  227.  
  228.    public Image getOffscreenBuffer(Component var1, int var2, int var3) {
  229.       Dimension var7 = this.getDoubleBufferMaximumSize();
  230.       int var5;
  231.       if (var2 < 1) {
  232.          var5 = 1;
  233.       } else if (var2 > var7.width) {
  234.          var5 = var7.width;
  235.       } else {
  236.          var5 = var2;
  237.       }
  238.  
  239.       int var6;
  240.       if (var3 < 1) {
  241.          var6 = 1;
  242.       } else if (var3 > var7.height) {
  243.          var6 = var7.height;
  244.       } else {
  245.          var6 = var3;
  246.       }
  247.  
  248.       if (this.doubleBuffer != null && (this.doubleBuffer.getWidth((ImageObserver)null) < var5 || this.doubleBuffer.getHeight((ImageObserver)null) < var6)) {
  249.          this.doubleBuffer = null;
  250.       }
  251.  
  252.       int var8 = var5;
  253.       int var9 = var6;
  254.       if (this.doubleBuffer != null) {
  255.          var8 = this.doubleBufferSize.width;
  256.          var9 = this.doubleBufferSize.height;
  257.          if (this.doubleBufferSize.width < var5) {
  258.             var8 = var5;
  259.             this.doubleBuffer = null;
  260.          }
  261.  
  262.          if (this.doubleBufferSize.height < var6) {
  263.             var9 = var6;
  264.             this.doubleBuffer = null;
  265.          }
  266.       }
  267.  
  268.       if (this.doubleBuffer == null) {
  269.          this.doubleBuffer = var1.createImage(var8, var9);
  270.          this.doubleBufferSize = new Dimension(var8, var9);
  271.       }
  272.  
  273.       return this.doubleBuffer;
  274.    }
  275.  
  276.    public boolean isCompletelyDirty(JComponent var1) {
  277.       Rectangle var2 = this.getDirtyRegion(var1);
  278.       return var2.width == Integer.MAX_VALUE && var2.height == Integer.MAX_VALUE;
  279.    }
  280.  
  281.    public boolean isDoubleBufferingEnabled() {
  282.       return this.doubleBufferingEnabled;
  283.    }
  284.  
  285.    public void markCompletelyClean(JComponent var1) {
  286.       synchronized(this){}
  287.  
  288.       try {
  289.          this.dirtyComponents.remove(var1);
  290.       } catch (Throwable var4) {
  291.          throw var4;
  292.       }
  293.  
  294.    }
  295.  
  296.    public void markCompletelyDirty(JComponent var1) {
  297.       this.addDirtyRegion(var1, 0, 0, Integer.MAX_VALUE, Integer.MAX_VALUE);
  298.    }
  299.  
  300.    public void paintDirtyRegions() {
  301.       synchronized(this){}
  302.  
  303.       try {
  304.          Hashtable var7 = this.tmpDirtyComponents;
  305.          this.tmpDirtyComponents = this.dirtyComponents;
  306.          this.dirtyComponents = var7;
  307.          this.dirtyComponents.clear();
  308.       } catch (Throwable var12) {
  309.          throw var12;
  310.       }
  311.  
  312.       int var2 = this.tmpDirtyComponents.size();
  313.       if (var2 != 0) {
  314.          byte var6 = 0;
  315.          byte var15 = 0;
  316.          int var8 = 0;
  317.          int var9 = 0;
  318.          Vector var3 = new Vector(var2);
  319.          Enumeration var10 = this.tmpDirtyComponents.keys();
  320.  
  321.          while(var10.hasMoreElements()) {
  322.             JComponent var4 = (JComponent)var10.nextElement();
  323.             this.collectDirtyComponents(this.tmpDirtyComponents, var4, var3);
  324.          }
  325.  
  326.          var2 = var3.size();
  327.  
  328.          for(int var1 = 0; var1 < var2; ++var1) {
  329.             JComponent var14 = (JComponent)var3.elementAt(var1);
  330.             Rectangle var5 = (Rectangle)this.tmpDirtyComponents.get(var14);
  331.             var8 = var14.getHeight();
  332.             var9 = var14.getWidth();
  333.             SwingUtilities.computeIntersection(var6, var15, var9, var8, var5);
  334.             var14.paintImmediately(var5.x, var5.y, var5.width, var5.height);
  335.          }
  336.  
  337.          this.tmpDirtyComponents.clear();
  338.       }
  339.    }
  340.  
  341.    public synchronized void removeInvalidComponent(JComponent var1) {
  342.       if (this.invalidComponents != null) {
  343.          int var2 = this.invalidComponents.indexOf(var1);
  344.          if (var2 != -1) {
  345.             this.invalidComponents.removeElementAt(var2);
  346.          }
  347.       }
  348.  
  349.    }
  350.  
  351.    public static void setCurrentManager(RepaintManager var0) {
  352.       if (var0 != null) {
  353.          SwingUtilities.appContextPut(repaintManagerKey, var0);
  354.       } else {
  355.          SwingUtilities.appContextRemove(repaintManagerKey);
  356.       }
  357.  
  358.    }
  359.  
  360.    public void setDoubleBufferMaximumSize(Dimension var1) {
  361.       this.doubleBufferMaxSize = var1;
  362.       if (this.doubleBuffer != null && (this.doubleBuffer.getWidth((ImageObserver)null) > var1.width || this.doubleBuffer.getHeight((ImageObserver)null) > var1.height)) {
  363.          this.doubleBuffer = null;
  364.       }
  365.  
  366.    }
  367.  
  368.    public void setDoubleBufferingEnabled(boolean var1) {
  369.       this.doubleBufferingEnabled = var1;
  370.    }
  371.  
  372.    public synchronized String toString() {
  373.       StringBuffer var1 = new StringBuffer();
  374.       if (this.dirtyComponents != null) {
  375.          var1.append(String.valueOf(String.valueOf(this.dirtyComponents)));
  376.       }
  377.  
  378.       return var1.toString();
  379.    }
  380.  
  381.    public void validateInvalidComponents() {
  382.       synchronized(this){}
  383.  
  384.       Vector var1;
  385.       try {
  386.          if (this.invalidComponents == null) {
  387.             return;
  388.          }
  389.  
  390.          var1 = this.invalidComponents;
  391.          this.invalidComponents = null;
  392.       } catch (Throwable var5) {
  393.          throw var5;
  394.       }
  395.  
  396.       int var2 = var1.size();
  397.  
  398.       for(int var3 = 0; var3 < var2; ++var3) {
  399.          ((Component)var1.elementAt(var3)).validate();
  400.       }
  401.  
  402.    }
  403. }
  404.